package com.itheima.lambda.test3;

public class StringHandlerDemo {
    /*
        1.首先存在一个接口（StringHandler）
        2.在该接口中存在一个抽象方法（printMessage），该方法是有参数无返回值
        3.在测试类（StringHandlerDemo）中存在一个方法（useStringHandler）
                方法的的参数是StringHandler类型的
                在方法内部调用了StringHandler的printMessage方法
     */
    public static void main(String[] args) {
        // Lambda实现
        StringHandler s1 = (String msg)->{
            System.out.println("我是Lambda实现:"+msg);
        };
        s1.printMessage("HelloWorld");

        /*
            Lambda使用前提:
                1. 要有函数式接口
                2. Lambda表达式不能独立存在,必须结合上下文使用
         */
        useStringHandler( msg->{ System.out.println("我是Lambda实现:"+msg); });

        //核心: 一切可推导的,都是可省略的
        useStringHandler(System.out::println);
    }

    public static void useStringHandler(StringHandler stringHandler){
        //StringHandler stringHandler = (String msg)->{System.out.println("我是Lambda表达式" + msg);}
        stringHandler.printMessage("itheima");
    }
}

interface StringHandler {
    void printMessage(String msg);
}
interface StringHandler1 {
    void printMessage(String msg);
}